#!/usr/bin/python
# -*- coding: UTF-8 -*-

import re
import xml.etree.ElementTree as ET
from django.utils.encoding import *

test_string=u"""
Markdown
=========

El nou blog de [trespams](http://trespams.com, "trepams.com") soporta el tipus **markdown** de resaltat i escriptura d'articles. 

L'unicode és un problema per blogmaker, però a trespams està solucionat, per exemple:

   aço, cosí, allò, ñaca, güell, ànid, traç, obtús, €


Provant la sintaxi *markdown*:

 1. Es pot escriure un paràgref
 2. O dos

que s'ha escrit com a: 

`Provant la sintaxi *markdown*:

 1. Es pot escriure un paràgref
 2. O dos <a href="http://test.com" title="test">Testing html tags</a>
 3. i també <a href="http://proves..com">this is a test aquí, sí</a>
`

Podem trobar més informació damunt la sintaxi del markdown a [Daring Fireball](http://daringfireball.net/projects/markdown/syntax,"Markdown syntax").
"""

rawstr= r"""(?<!!\[) #comprovam que no dugui un ! davant
                        \[
                         (?P<name>.*?)
                        \]#el darrer claudator
                        \( # parèntesi
                        (?P<url>(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?)
                        (,\s*(?P<sep>["'])(?P<title>.*?)(?P=sep))?
                        \)"""
                         
anchorRe = re.compile(r'''<\s*a\s[^>]*\bhref\s*=\s*["'].*?["']\s*.*?<\s*/a\s*>''',re.IGNORECASE| re.MULTILINE| re.DOTALL| re.VERBOSE| re.UNICODE )                    
markdownAnchorRe =  re.compile(rawstr,  re.IGNORECASE| re.DOTALL| re.VERBOSE| re.UNICODE)

s=r"""<\s*a\s[^>]*\bhref\s*=\s*
('(?<url>[^']*)'|""(?<url>[^""]*)""|(?<url>\S*))[^>]*> (?<body>(.|\s)*?)<\s*/a\s*>"""
        
print "Markdown anchors"               
for anchor in markdownAnchorRe.finditer(test_string):
    match = (anchor.group('name'), anchor.group('url'),anchor.group('title'))
    print "anchor: %s group: %s  title: %s" % match
    
print "HTML anchors"
import pdb
pdb.set_trace()
for anchor in anchorRe.findall(test_string):
    element = ET.XML(smart_str(anchor))
    match = (element.text, element.get('href'),element.get('title'))
    print "anchor: %s group: %s  title: %s" % match
    